package cn.tedu.csmall.server.preload; 
 /*
 @Time: 2022/10/30 18:04
 @Author:GShuai
 @File:CachePerLoad.class
 @Software:IntelliJ IDEA
*/

import cn.tedu.csmall.server.mapper.BrandMapper;
import cn.tedu.csmall.server.pojo.vo.BrandListItemVO;
import cn.tedu.csmall.server.repo.IBrandRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Set;

/**
 * 缓存预热组件类
 * 由于另外使用了计划任务（指定执行频率fixedRate的计划任务首次执行是启动项目时），所以，不需要通过此类来实现缓存预热
 * 开机自动启动Redis
 */
@Slf4j
//@Component
public class CachePerLoad implements ApplicationRunner {
    @Autowired
    private BrandMapper brandMapper;

    @Autowired
    private IBrandRepository brandRepository;

    public CachePerLoad() {
        log.debug("创建启动自动执行方法ApplicationRunnerCachePerLoad对象：CachePerLoad");
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("执行CachePerLoad.run()方法");
        // 将Redis中数据清除
        brandRepository.deleteList();
        // 从Mysql中读取品牌列表
        List<BrandListItemVO> brands= brandMapper.list();
        // 将品牌列表
        brandRepository.putList(brands);
    }
}
